#include <linux/init.h>
#include <linux/module.h>

//#define PRINTK printk
#define PRINTK(x...)

//__init: 编译器语法，不是C语言语法，在这里是告诉编译器，该函数不要放在代码段，放在.init(linux内核启动的时候会执行该段代码，并且执行完会释放该段)
static int __init module_test_init(void)
{
	//printk(KERN_ERR"-----%s-----%s----%d------\n",__FILE__, __FUNCTION__, __LINE__);
	PRINTK("-----%s-----%s----%d------\n",__FILE__, __FUNCTION__, __LINE__);
	return 0;
}

//__exit: 编译器语法，不是C语言语法,在这里是告诉编译器，该函数不要放在代码段，放在.exit(linux内核关闭的时候会执行该段代码)
static void __exit module_test_exit(void)
{
	//printk(KERN_ERR"-----%s-----%s----%d------\n",__FILE__, __FUNCTION__, __LINE__);
	PRINTK("-----%s-----%s----%d------\n",__FILE__, __FUNCTION__, __LINE__);
}

//=================必须=====================
module_init(module_test_init);
module_exit(module_test_exit);
MODULE_LICENSE("GPL");

//================非必须====================
MODULE_ALIAS("Module Test By DaoGe");
MODULE_DESCRIPTION("This is a test program writen by daoge");
MODULE_AUTHOR("shelin.shen");